home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util1 / yk211src.lha / Yak_2.11_Src / Prefs / BGUI / Misc_window.c < prev    next >
C/C++ Source or Header  |  1995-11-16  |  18KB  |  360 lines

  1. /************************************************************************
  2. **********************  BGUI MISCELLANEOUS WINDOW  **********************
  3. ************************************************************************/
  4.  
  5. #include <exec/types.h>
  6. #include <intuition/intuition.h>
  7. #include <intuition/classes.h>
  8. #include <intuition/classusr.h>
  9. #include <intuition/imageclass.h>
  10. #include <intuition/gadgetclass.h>
  11. #include <intuition/intuitionbase.h>
  12. #include <libraries/bgui.h>
  13. #include <libraries/bgui_macros.h>
  14. #include <proto/exec.h>
  15. #include <proto/intuition.h>
  16. #include <proto/bgui.h>
  17. #include <proto/wb.h>
  18. #include <clib/alib_protos.h>
  19. #include <string.h>
  20.  
  21. #include "yak.h"
  22. #include "version.h"
  23. #include "hotkey_types.h"
  24. #include "gui.h"
  25. #include "Misc_Window.h"
  26. #include "Settings.h"
  27. #include "yak_locale_strings.h"
  28.  
  29. /************************************************************************
  30. *****************************  REFERENCES  ******************************
  31. ************************************************************************/
  32.  
  33. IMPORT LONG (*HandleReturnID)(LONG ID);
  34.  
  35. IMPORT char *PrefsHelp;
  36.  
  37. /************************************************************************
  38. *****************************  LOCAL DATA  ******************************
  39. ************************************************************************/
  40.  
  41. struct Window   *MiscWnd = NULL;
  42. Object                  *MiscWndObj = NULL;
  43. Object                  *MiscObjects[Misc_CNT];
  44. struct IBox             MiscBox;
  45. BOOL                    MiscBoxValid = FALSE;
  46.  
  47. /************************************************************************
  48. *************************  CREATEMISCWINDOW()  **************************
  49. *************************************************************************
  50. * Create the misc window object tree. Returns the window object ptr or
  51. * NULL if create failed. Gadgets are initialised with default values,
  52. * InitMiscGadgets must be called after window opened to reflect current
  53. * settings.
  54. *
  55. *************************************************************************/
  56.  
  57. APTR CreateMiscWindow(void)
  58. {
  59. Object  *obj,*indicobj;
  60.  
  61. /* maplist: converts slider level tag to indicator level tag */
  62. static struct TagItem SliderToIndicMap[] = {
  63.         SLIDER_Level, INDIC_Level, TAG_DONE
  64. };
  65.  
  66. obj = WindowObject,
  67.         WINDOW_PubScreenName, PubScreenName,
  68.         WINDOW_Title,           getString(MISCELLANEOUS_STRING),
  69.         WINDOW_ScreenTitle,     getString(COPYRIGHT_STRING),
  70.         WINDOW_SmartRefresh, TRUE,
  71.         WINDOW_SizeBottom,      FALSE,                  /* put size gadget in right border */
  72.         WINDOW_SizeRight,       TRUE,
  73.         WINDOW_AutoAspect,      TRUE,                   /* automatic edges pixel width */
  74.         (MiscBoxValid ? WINDOW_Bounds : TAG_IGNORE), &MiscBox,
  75.         WINDOW_Position,        POS_CENTERMOUSE,
  76.         WINDOW_AppWindow,       TRUE,                   /* make it an appwindow */
  77.         WINDOW_RMBTrap,         TRUE,                   /* trap rmb - no menu */
  78.         WINDOW_CloseGadget,     FALSE,                  /* no windowclose gadget please */
  79.         (TextFont ? WINDOW_Font : TAG_IGNORE),  &Attr,  /* use font if specified */
  80.         WINDOW_HelpFile,        PrefsHelp,              /* online help system */
  81.         WINDOW_HelpNode,        "Miscellaneous",
  82.         WINDOW_MasterGroup,
  83.                 VGroupObject, Spacing(4), HOffset(4), VOffset(4),
  84.                         StartMember,
  85.                                 HGroupObject, Spacing(24), EqualWidth,
  86.                                         StartMember,
  87.                                                 VGroupObject, Spacing(2),
  88.                                                         StartMember,
  89.                                                                 CH_WildStar = CheckBoxObject,
  90.                                                                         LAB_Label,              getString(WILD_STAR_STRING),
  91.                                                                         LAB_Place,              PLACE_RIGHT,
  92.                                                                         GA_ID,                  GD_WildStarCheck,
  93.                                                                         ButtonFrame,
  94.                                                                         FRM_Flags,              FRF_EDGES_ONLY,
  95.                                                                 EndObject, FixMinWidth,
  96.                                                         EndMember,
  97.                                                         VarSpace(DEFAULT_WEIGHT/10),
  98.                                                         StartMember,
  99.                                                                 CH_NoClick = CheckBoxObject,
  100.                                                                         LAB_Label,              getString(NOCLICK_STRING),
  101.                                                                         LAB_Place,              PLACE_RIGHT,
  102.                                                                         GA_ID,                  GD_NoClickCheck,
  103.                                                                         ButtonFrame,
  104.                                                                         FRM_Flags,              FRF_EDGES_ONLY,
  105.                                                                 EndObject, FixMinWidth,
  106.                                                         EndMember,
  107.                                                         VarSpace(DEFAULT_WEIGHT/10),
  108.                                                         StartMember,
  109.                                                                 CH_MMBShift = CheckBoxObject,
  110.                                                                         LAB_Label,              getString(MMB_SHIFT_STRING),
  111.                                                                         LAB_Place,              PLACE_RIGHT,
  112.                                                                         GA_ID,                  GD_MMBShiftCheck,
  113.                                                                         ButtonFrame,
  114.                                                                         FRM_Flags,              FRF_EDGES_ONLY,
  115.                                                                 EndObject, FixMinWidth,
  116.                                                         EndMember,
  117.                                                         VarSpace(DEFAULT_WEIGHT/10),
  118.                                                         StartMember,
  119.                                                                 CH_FullWorkbench = CheckBoxObject,
  120.                                                                         LAB_Label,              getString(FULL_WORKBENCH_STRING),
  121.                                                                         LAB_Place,              PLACE_RIGHT,
  122.                                                                         GA_ID,                  GD_FullWorkbenchCheck,
  123.                                                                         ButtonFrame,
  124.                                                                         FRM_Flags,              FRF_EDGES_ONLY,
  125.                                                                 EndObject, FixMinWidth,
  126.                                                         EndMember,
  127.                                                 EndObject,
  128.                                         EndMember,
  129.                                         StartMember,
  130.                                                 VGroupObject, Spacing(2),
  131.                                                         StartMember,
  132.                                                                 CH_BlackBorder = CheckBoxObject,
  133.                                                                         LAB_Label,              getString(BLACK_BORDER),
  134.                                                                         LAB_Place,              PLACE_RIGHT,
  135.                                                                         GA_ID,                  GD_BlackBorderCheck,
  136.                                                                         ButtonFrame,
  137.                                                                         FRM_Flags,              FRF_EDGES_ONLY,
  138.                                                                 EndObject, FixMinWidth,
  139.                                                         EndMember,
  140.                                                         VarSpace(DEFAULT_WEIGHT/10),
  141.                                                         StartMember,
  142.                                                                 CH_CapShift = CheckBoxObject,
  143.                                                                         LAB_Label,              getString(CAPSHIFT_STRING),
  144.                                                                         LAB_Place,              PLACE_RIGHT,
  145.                                                                         GA_ID,                  GD_CapShiftCheck,
  146.                                                                         ButtonFrame,
  147.                                                                         FRM_Flags,              FRF_EDGES_ONLY,
  148.                                                                 EndObject, FixMinWidth,
  149.                                                         EndMember,
  150.                                                         VarSpace(DEFAULT_WEIGHT/10),
  151.                                                         StartMember,
  152.                                                                 CH_UnixDirs = CheckBoxObject,
  153.                                                                         LAB_Label,              getString(UNIXDIRS_STRING),
  154.                                                                         LAB_Place,              PLACE_RIGHT,
  155.                                                                         GA_ID,                  GD_UnixDirsCheck,
  156.                                                                         ButtonFrame,
  157.                                                                         FRM_Flags,              FRF_EDGES_ONLY,
  158.                                                                 EndObject, FixMinWidth,
  159.                                                         EndMember,
  160.                                                         VarSpace(DEFAULT_WEIGHT/10),
  161.                                                         StartMember,
  162.                                                                 CH_SlashDir = CheckBoxObject,
  163.                                                                         LAB_Label,              getString(SLASHDIR_STRING),
  164.                                                                         LAB_Place,              PLACE_RIGHT,
  165.                                                                         GA_ID,                  GD_SlashDirCheck,
  166.                                                                         ButtonFrame,
  167.                                                                         FRM_Flags,              FRF_EDGES_ONLY,
  168.                                                                 EndObject, FixMinWidth,
  169.                                                         EndMember,
  170.                                                 EndObject,
  171.                                         EndMember,
  172.                                 EndObject, Weight(DEFAULT_WEIGHT*4),
  173.                         EndMember,
  174.                         VarSpace(DEFAULT_WEIGHT/10),
  175.                         StartMember,
  176.                                 HGroupObject, Spacing(2),
  177.                                         StartMember,
  178.                                                 SL_ClickVol = SliderObject,
  179.                                                         LAB_Label,              getString(CLICKVOLUME_STRING),
  180.                                                         SLIDER_Min,             0,
  181.                                                         SLIDER_Max,             64,
  182.                                                         SLIDER_Level,   0,
  183.                                                         GA_ID,                  GD_ClickVol,
  184.                                                 EndObject,
  185.                                         EndMember,
  186.                                         StartMember,
  187.                                                 indicobj = IndicatorObject,
  188.                                                         INDIC_Min,              0,
  189.                                                         INDIC_Max,              64,
  190.                                                         INDIC_Level,    0,
  191.                                                         INDIC_FormatString,"%2lu",
  192.                                                         INDIC_Justification,IDJ_CENTER,
  193.                                                 EndObject, Weight(DEFAULT_WEIGHT/10),
  194.                                         EndMember,
  195.                                 EndObject, NoAlign,
  196.                         EndMember,
  197.                         VarSpace(DEFAULT_WEIGHT/10),
  198.                         StartMember,
  199.                                 HorizSeparator,
  200.                         EndMember,
  201.                         StartMember,
  202.                                 HGroupObject, Spacing(2),
  203.                                         VarSpace(DEFAULT_WEIGHT),
  204.                                         StartMember,
  205.                                                 BT_Return2 = Button(getString(OK_STRING),GD_Return2),
  206.                                         EndMember,
  207.                                         VarSpace(DEFAULT_WEIGHT),
  208.                                 EndObject,
  209.                         EndMember,
  210.                 EndObject,
  211.         EndObject;
  212.  
  213. if (obj)
  214.         {
  215.         /* add map from slider to its level indicator */
  216.         AddMap(SL_ClickVol,indicobj,SliderToIndicMap);
  217.  
  218.         /* add conditional map: disables CH_SlashDir */
  219.         /* when CH_UnixDirs is unchecked */
  220.         AddCondit(CH_UnixDirs,CH_SlashDir,GA_Selected,TRUE,
  221.                 GA_Disabled,FALSE,GA_Disabled,TRUE);
  222.         }
  223.  
  224. return(obj);
  225. }
  226.  
  227. /************************************************************************
  228. **************************  CLOSEMISCWINDOW()  **************************
  229. *************************************************************************
  230. * Close the misc window, disposing of the window object.
  231. *
  232. *************************************************************************/
  233.  
  234. void CloseMiscWindow(void)
  235. {
  236. if (MiscWnd)
  237.         {
  238.         GetAttr(WINDOW_Bounds,MiscWndObj,(ULONG *) &MiscBox);
  239.         MiscBoxValid = TRUE;
  240.         }
  241.  
  242. DisposeObject(MiscWndObj);
  243. MiscWndObj = NULL;
  244. MiscWnd = NULL;
  245. }
  246.  
  247. /************************************************************************
  248. *************************  INITMISCGADGETS()  ***************************
  249. *************************************************************************
  250. * Initialize the misc window gadgets to reflect current settings.
  251. *************************************************************************/
  252.  
  253. static void InitMiscGadgets(void)
  254. {
  255. InitToggleGadgets(MISC_WINDOW);
  256. InitWindowGadget(GDX_SlashDirCheck, GA_Disabled, !unixdirs, MISC_WINDOW);
  257. InitWindowGadget(GDX_ClickVol, SLIDER_Level, click_volume, MISC_WINDOW);
  258. }
  259.  
  260. /************************************************************************
  261. ************************  HANDLEMISCRETURNID()  *************************
  262. *************************************************************************
  263. * Handle msgs arriving at misc window - supply the ID returned by BGUI.
  264. * Returns either RET_OKAY or RET_QUIT.
  265. *
  266. *************************************************************************/
  267.  
  268. LONG HandleMiscReturnID(LONG id)
  269. {
  270. LONG    ret;
  271. LONG    num;
  272.  
  273. ret = RET_OKAY;
  274.  
  275. switch(id)
  276.         {
  277.         case GD_Return2:
  278.                 CloseMiscWindow();
  279.                 if (!ShowWindowID(ROOT_WINDOW))
  280.                         ret= RET_QUIT;
  281.                 break;
  282.  
  283.         case GD_ClickVol:
  284.                 GetAttr(SLIDER_Level,SL_ClickVol,(ULONG *)&num);
  285.                 click_volume = num;
  286.                 break;
  287.  
  288.         case GD_BlackBorderCheck:
  289.                 blackborder ^= TRUE;
  290.                 break;
  291.  
  292.         case GD_WildStarCheck: /* toggle */
  293.                 wildstar ^= TRUE;
  294.                 break;
  295.  
  296.         case GD_NoClickCheck: /* toggle */
  297.                 noclick ^= TRUE;
  298.                 break;
  299.  
  300.         case GD_UnixDirsCheck: /* toggle */
  301.                 unixdirs ^= TRUE;
  302.                 break;
  303.  
  304.         case GD_MMBShiftCheck: /* toggle */
  305.                 mmbshift ^= TRUE;
  306.                 break;
  307.  
  308.         case GD_SlashDirCheck: /* toggle */
  309.                 slashdir ^= TRUE;
  310.                 break;
  311.  
  312.         case GD_FullWorkbenchCheck: /* toggle */
  313.                 fullworkbench ^= TRUE;
  314.                 break;
  315.  
  316.         case GD_CapShiftCheck: /* toggle */
  317.                 capshift ^= TRUE;
  318.                 break;
  319.  
  320.         default:
  321.                 break;
  322.         }
  323.  
  324. return(ret);
  325. }
  326.  
  327. /************************************************************************
  328. **************************  SHOWMISCWINDOW()  ***************************
  329. *************************************************************************
  330. * Create and open the misc window and initialize the gadgets to reflect
  331. * current settings. Sets up HandleReturnID function, curwin, curwinobj
  332. * and curwinID. Returns TRUE or FALSE to indicate success.
  333. *
  334. *************************************************************************/
  335.  
  336. BOOL ShowMiscWindow(void)
  337. {
  338. if (MiscWndObj = (Object *)CreateMiscWindow())
  339.         {
  340.         if (MiscWnd = WindowOpen(MiscWndObj))
  341.                 {
  342.                 InitMiscGadgets();
  343.                 HandleReturnID = HandleMiscReturnID;
  344.                 curwin = MiscWnd;
  345.                 curwinobj = MiscWndObj;
  346.                 curwinID = MISC_WINDOW;
  347.                 return(TRUE);
  348.                 }
  349.         }
  350.  
  351. CloseMiscWindow();
  352. curwin = NULL;
  353. curwinobj = NULL;
  354. wndsigflag = 0L;
  355. appwinsigflag = 0L;
  356. return(FALSE);
  357. }
  358.  
  359.